The present invention relates to job management in one or more computer systems.
Computer installations often include multiple computer systems, at one or multiple physical sites. A computer installation generally has tasks that are run without user interaction. Examples of such tasks are a system backup or a payroll run in an Enterprise Resource Planning (“ERP”) system. These tasks are usually performed as background or batch jobs (which in this specification will also be referred to simply as a “jobs”). Jobs are generally scheduled with a certain start condition (e.g., start time), and, if the start condition is fulfilled, the jobs are started automatically without user interaction. To avoid slowing down system responses for users, jobs are typically run when the system has a low user interaction load.
A task may be performed by multiple jobs. For example, a complex payroll run in an ERP system can be split up into hundreds of jobs. Dependencies can exist between or among these jobs, where the one or more jobs should not be started until the completion of one or more other jobs, or where jobs should not be started until necessary input data has been prepared. Dependencies that necessarily arise will be referred to as static dependencies.
Typically, a job scheduler (which will be referred to simply as a scheduler) for managing jobs uses a job sequence that defines start conditions for each job and defines interdependencies between various jobs, even across multiple computers. This information may come from local job administration programs (e.g., batch control processors) of the various computers.
A problem can occur when a first job starts a child job and the start of a second job is implicitly dependent on the successful completion of the child job. The child job may have been created for the purpose of dynamically distributing workload. Some schedulers will start the second job when the first job is completed but before the child job completed successfully, which can then lead to a failure of the second job.
When jobs are started on multiple computer systems communicating over a network, a scheduler can be used to coordinate the start of each job throughout the whole computer installation.